<?php
/*
*封装一个简单的数据库操作类
*/
class Db
{
	var $conn;
	var $error;
	//构造函数
	function Db($host="localhost",$user="root",$pass="",$db="phpext")
	{
		if(!$this->conn=mysql_connect($host,$user,$pass))
		die("can't connect to mysql sever");
		mysql_select_db($db,$this->conn);
		mysql_query("SET NAMES 'UTF-8'");
	}
	//错误信息
	function getError()
	{
	  return addslashes($this->error);
	}
	//直接执行sql，用于更新，删除，添加
	function execute($sql)
	{
	  if(mysql_query($sql,$this->conn))
	  { return true;}else{
	   $this->error=mysql_error();
	   return false;
	  }
	}
	//获取记录数
	function findCount($sql)
	{
	   $result=mysql_query($sql);
	   return mysql_num_rows($result);
	}
	//通过sql语句获取记录集，返回数组
	function findBySql($sql)
	{
	   $array=array();
	   $result=mysql_query($sql);
	   $i=0;
	   while($row=mysql_fetch_assoc($result))
       {
	     $array[$i]=$row; 
		 $i++;
       }
	   return $array;
	}
	//$con的几种情况
	//空：返回全部记录
	//array：eg. array('id'=>'1') 返回id=1的记录
	//string :eg. 'id=1' 返回id=1的记录
	function toExtJson($table,$start=0,$limit=10,$cons="")
	{
	  $sql=$this->generateSql($table,$cons);
	  $totalNum=$this->findCount($sql);
	  $result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
	  $resultNum = count($result);//当前结果数
		$str="";
		$str.= "{";
		$str.= "'totalCount':'$totalNum',";
		$str.="'rows':";
		$str.="[";
		for($i=0;$i<$resultNum;$i++){
			$str.="{"; 
			$count=count($result[$i]);
			$j=1;
			foreach($result[$i] as $key=>$val)
			{
			if($j<$count)
			{
			$str.="'".$key."':'".$val."',";
			}
			elseif($j==$count)
			{
			$str.="'".$key."':'".$val."'";
			}
			$j++;
            }
			
			$str.="}";
			if ($i != $resultNum-1) {
            	$str.= ",";
        	}

		}
		$str.="]";
		$str.="}";
		return $str;  
	}
	//通过条件生成sql
	function generateSql($table,$cons)
	{
		  $sql="";//sql条件
	  $sql="select * from ".$table;
	  if($cons!="")
	  {
	  if(is_array($cons))
	  {
	    $k=0;
	    foreach($cons as $key=>$val)
		{
		if($k==0)
		{
		$sql.="where '";
		$sql.=$key;
		$sql.="'='";
		$sql.=$val."'";
		}else
		{
		$sql.="and '";
		$sql.=$key;
		$sql.="'='";
		$sql.=$val."'";
		}
		$k++;
		}
	  }else
	  {
	  $sql.=" where".$cons;
	  }
	  }
	  return $sql;

	}

}
?>